[INFO] fetching crate CESE4015_Concurrency_RJN_JVL 0.1.0...
[INFO] checking CESE4015_Concurrency_RJN_JVL-0.1.0 against master#9610dfe5a9a731ced1ea4923ecbd0c57fe367898 for beta-170-4
[INFO] extracting crate CESE4015_Concurrency_RJN_JVL 0.1.0 into /workspace/builds/worker-0-tc1/source
[INFO] validating manifest of crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0 on toolchain 9610dfe5a9a731ced1ea4923ecbd0c57fe367898
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0
[INFO] finished tweaking crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0
[INFO] tweaked toml for crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] crate crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7c03c4b35a998a94095f8fa4daa91818cb130217cc94f2b85f0f5e362bbf8a26
[INFO] running `Command { std: "docker" "start" "-a" "7c03c4b35a998a94095f8fa4daa91818cb130217cc94f2b85f0f5e362bbf8a26", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7c03c4b35a998a94095f8fa4daa91818cb130217cc94f2b85f0f5e362bbf8a26", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7c03c4b35a998a94095f8fa4daa91818cb130217cc94f2b85f0f5e362bbf8a26", kill_on_drop: false }`
[INFO] [stdout] 7c03c4b35a998a94095f8fa4daa91818cb130217cc94f2b85f0f5e362bbf8a26
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:19e73879b68f455e41552ea35293514db52ea292d993f571636dbffedb77a1ee" "/opt/rustwide/cargo-home/bin/cargo" "+9610dfe5a9a731ced1ea4923ecbd0c57fe367898" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] db9f6020892b041b4661814bbbccf3db3afbaa816f45a0c56d642641f68bd848
[INFO] running `Command { std: "docker" "start" "-a" "db9f6020892b041b4661814bbbccf3db3afbaa816f45a0c56d642641f68bd848", kill_on_drop: false }`
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling proc-macro2 v1.0.46
[INFO] [stderr]    Compiling unicode-ident v1.0.4
[INFO] [stderr]    Compiling quote v1.0.21
[INFO] [stderr]    Compiling syn v1.0.101
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling libc v0.2.134
[INFO] [stderr]    Compiling heck v0.4.0
[INFO] [stderr]     Checking os_str_bytes v6.3.0
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking once_cell v1.15.0
[INFO] [stderr]     Checking regex-syntax v0.6.27
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking termcolor v1.1.3
[INFO] [stderr]     Checking clap_lex v0.3.0
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking aho-corasick v0.7.19
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking regex v1.6.0
[INFO] [stderr]    Compiling clap_derive v4.0.1
[INFO] [stderr]     Checking clap v4.0.4
[INFO] [stderr]     Checking CESE4015_Concurrency_RJN_JVL v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:39:25
[INFO] [stdout]    |
[INFO] [stdout] 39 |                         /// call get file function that uses the path to check if there are files or directories
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |                         get_file(entry.path(), regex.clone(), tx.clone());
[INFO] [stdout]    |                         ------------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     /// see all threads that is available for system
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     let threads = usize::from(std::thread::available_parallelism().unwrap());
[INFO] [stdout]    |     ------------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |       /// if file make thread for every file
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 | /     if paths.is_file(){
[INFO] [stdout] 57 | |         /// wait if all threads are active
[INFO] [stdout] 58 | |         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] 59 | |             //thread::sleep(Duration::from_millis(1));        // system sleep
[INFO] [stdout] ...  |
[INFO] [stdout] 74 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 75 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |           /// wait if all threads are active
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 58 | /         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] 59 | |             //thread::sleep(Duration::from_millis(1));        // system sleep
[INFO] [stdout] 60 | |         }
[INFO] [stdout]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |         /// make threads and add one to ATOMIC_THREADS to make sure that only a limited amount of threads are active
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |         ATOMIC_THREADS.fetch_add(1, Ordering::SeqCst);
[INFO] [stdout]    |         --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         ///get recursively next directory
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |         let dir = paths.read_dir();
[INFO] [stdout]    |         --------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |               /// loop over all the matches found in the file and add them to the vector and set the boolean for found regex on true
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 | /             for range in regex.find_iter(&*file){
[INFO] [stdout] 90 | |                 range_vec.push(Range{start: range.start(), end: range.end() });
[INFO] [stdout] 91 | |                 regex_found = true;
[INFO] [stdout] 92 | |             }
[INFO] [stdout]    | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:94:13
[INFO] [stdout]     |
[INFO] [stdout] 94  |               /// if match make result struct and send the data
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95  | /             if regex_found{
[INFO] [stdout] 96  | |                 let result = GrepResult {
[INFO] [stdout] 97  | |                     path: paths.clone(),
[INFO] [stdout] 98  | |                     content: file,
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |                 }
[INFO] [stdout] 107 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:39:25
[INFO] [stdout]    |
[INFO] [stdout] 39 |                         /// call get file function that uses the path to check if there are files or directories
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |                         get_file(entry.path(), regex.clone(), tx.clone());
[INFO] [stdout]    |                         ------------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     /// subtract threads count
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 112 |     ATOMIC_THREADS.fetch_sub(1, Ordering::SeqCst);
[INFO] [stdout]     |     --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     ///Parse arguments, using the clap crate
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     let args: Args = Args::parse();
[INFO] [stdout]     |     ------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     /// see all threads that is available for system
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     let threads = usize::from(std::thread::available_parallelism().unwrap());
[INFO] [stdout]    |     ------------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |       /// Get the paths that we should search
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 121 | /     let paths = if args.paths.is_empty() {
[INFO] [stdout] 122 | |         ///If no paths were provided, we search the current path
[INFO] [stdout] 123 | |         vec![std::env::current_dir().unwrap()]
[INFO] [stdout] 124 | |     } else {
[INFO] [stdout] 125 | |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout] 126 | |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout] 127 | |     };
[INFO] [stdout]     | |______- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 122 |         ///If no paths were provided, we search the current path
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]     |
[INFO] [stdout]     = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |       /// if file make thread for every file
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 | /     if paths.is_file(){
[INFO] [stdout] 57 | |         /// wait if all threads are active
[INFO] [stdout] 58 | |         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] 59 | |             //thread::sleep(Duration::from_millis(1));        // system sleep
[INFO] [stdout] ...  |
[INFO] [stdout] 74 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 75 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |           /// wait if all threads are active
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 58 | /         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] 59 | |             //thread::sleep(Duration::from_millis(1));        // system sleep
[INFO] [stdout] 60 | |         }
[INFO] [stdout]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 126 |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout]     |         ---------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |         /// make threads and add one to ATOMIC_THREADS to make sure that only a limited amount of threads are active
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |         ATOMIC_THREADS.fetch_add(1, Ordering::SeqCst);
[INFO] [stdout]    |         --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |       /// loop through paths
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 139 | /     for i in paths.iter(){
[INFO] [stdout] 140 | |         /// get directory
[INFO] [stdout] 141 | |         let dir = i.read_dir();
[INFO] [stdout] 142 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 143 | |     }
[INFO] [stdout]     | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         ///get recursively next directory
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |         let dir = paths.read_dir();
[INFO] [stdout]    |         --------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         /// get directory
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 141 |         let dir = i.read_dir();
[INFO] [stdout]     |         ----------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |               /// loop over all the matches found in the file and add them to the vector and set the boolean for found regex on true
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 | /             for range in regex.find_iter(&*file){
[INFO] [stdout] 90 | |                 range_vec.push(Range{start: range.start(), end: range.end() });
[INFO] [stdout] 91 | |                 regex_found = true;
[INFO] [stdout] 92 | |             }
[INFO] [stdout]    | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |               /// Find the index of the first byte before the range that is a newline character, plus one.
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 | /             let mut ctx_start = (0..range.start)
[INFO] [stdout] 178 | |                 .rev()
[INFO] [stdout] 179 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 180 | |                 .map(|p| p + 1)
[INFO] [stdout] 181 | |                 .unwrap_or(0);
[INFO] [stdout]     | |______________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:94:13
[INFO] [stdout]     |
[INFO] [stdout] 94  |               /// if match make result struct and send the data
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 95  | /             if regex_found{
[INFO] [stdout] 96  | |                 let result = GrepResult {
[INFO] [stdout] 97  | |                     path: paths.clone(),
[INFO] [stdout] 98  | |                     content: file,
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |                 }
[INFO] [stdout] 107 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |               /// Find the index of the first byte after the range that is a newline character (not minus one because it is exclusive)
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 184 | /             let mut ctx_end = (range.end..self.content.len())
[INFO] [stdout] 185 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 186 | |                 .unwrap_or(self.content.len());
[INFO] [stdout]     | |_______________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     /// subtract threads count
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 112 |     ATOMIC_THREADS.fetch_sub(1, Ordering::SeqCst);
[INFO] [stdout]     |     --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |               /// if the context is too large, reduce its size
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 | /             if ctx_start + max_context < range.start {
[INFO] [stdout] 190 | |                 ctx_start = range.start - max_context;
[INFO] [stdout] 191 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     ///Parse arguments, using the clap crate
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     let args: Args = Args::parse();
[INFO] [stdout]     |     ------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |               /// Finally, print the result
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 197 | /             writeln!(
[INFO] [stdout] 198 | |                 f,
[INFO] [stdout] 199 | |                 "{}",
[INFO] [stdout] 200 | |                 String::from_utf8_lossy(&self.content[ctx_start..ctx_end])
[INFO] [stdout] 201 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |       /// Get the paths that we should search
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 121 | /     let paths = if args.paths.is_empty() {
[INFO] [stdout] 122 | |         ///If no paths were provided, we search the current path
[INFO] [stdout] 123 | |         vec![std::env::current_dir().unwrap()]
[INFO] [stdout] 124 | |     } else {
[INFO] [stdout] 125 | |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout] 126 | |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout] 127 | |     };
[INFO] [stdout]     | |______- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |               /// Print ^^^^ underneath matched part
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 203 | /             writeln!(
[INFO] [stdout] 204 | |                 f,
[INFO] [stdout] 205 | |                 "{}{}{}",
[INFO] [stdout] 206 | |                 " ".repeat(range.start - ctx_start),
[INFO] [stdout] 207 | |                 "^".repeat(range.end - range.start),
[INFO] [stdout] 208 | |                 " ".repeat(ctx_end - range.end)
[INFO] [stdout] 209 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 122 |         ///If no paths were provided, we search the current path
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]     |
[INFO] [stdout]     = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 126 |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout]     |         ---------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |       /// loop through paths
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 139 | /     for i in paths.iter(){
[INFO] [stdout] 140 | |         /// get directory
[INFO] [stdout] 141 | |         let dir = i.read_dir();
[INFO] [stdout] 142 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 143 | |     }
[INFO] [stdout]     | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         /// get directory
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 141 |         let dir = i.read_dir();
[INFO] [stdout]     |         ----------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |               /// Find the index of the first byte before the range that is a newline character, plus one.
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 | /             let mut ctx_start = (0..range.start)
[INFO] [stdout] 178 | |                 .rev()
[INFO] [stdout] 179 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 180 | |                 .map(|p| p + 1)
[INFO] [stdout] 181 | |                 .unwrap_or(0);
[INFO] [stdout]     | |______________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |               /// Find the index of the first byte after the range that is a newline character (not minus one because it is exclusive)
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 184 | /             let mut ctx_end = (range.end..self.content.len())
[INFO] [stdout] 185 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 186 | |                 .unwrap_or(self.content.len());
[INFO] [stdout]     | |_______________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |               /// if the context is too large, reduce its size
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 | /             if ctx_start + max_context < range.start {
[INFO] [stdout] 190 | |                 ctx_start = range.start - max_context;
[INFO] [stdout] 191 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |               /// Finally, print the result
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 197 | /             writeln!(
[INFO] [stdout] 198 | |                 f,
[INFO] [stdout] 199 | |                 "{}",
[INFO] [stdout] 200 | |                 String::from_utf8_lossy(&self.content[ctx_start..ctx_end])
[INFO] [stdout] 201 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |               /// Print ^^^^ underneath matched part
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 203 | /             writeln!(
[INFO] [stdout] 204 | |                 f,
[INFO] [stdout] 205 | |                 "{}{}{}",
[INFO] [stdout] 206 | |                 " ".repeat(range.start - ctx_start),
[INFO] [stdout] 207 | |                 "^".repeat(range.end - range.start),
[INFO] [stdout] 208 | |                 " ".repeat(ctx_end - range.end)
[INFO] [stdout] 209 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `CESE4015_Concurrency_RJN_JVL` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `cese4015_concurrency_rjn_jvl`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 22 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `CESE4015_Concurrency_RJN_JVL` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `cese4015_concurrency_rjn_jvl`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 22 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 6.86s
[INFO] running `Command { std: "docker" "inspect" "db9f6020892b041b4661814bbbccf3db3afbaa816f45a0c56d642641f68bd848", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "db9f6020892b041b4661814bbbccf3db3afbaa816f45a0c56d642641f68bd848", kill_on_drop: false }`
[INFO] [stdout] db9f6020892b041b4661814bbbccf3db3afbaa816f45a0c56d642641f68bd848
